package com.xj.algorithm.leetcode;

/**
 * 反转字符串中的元音字母
 */
public class L345_反转字符串中的元音字母 {

    /**
     * 编写一个函数，以字符串作为输入，反转该字符串中的元音字母。
     * <p>
     * 示例 1:
     * <p>
     * 输入: "hello"
     * 输出: "holle"
     * 示例 2:
     * <p>
     * 输入: "leetcode"
     * 输出: "leotcede"
     * 说明:
     * 元音字母不包含字母"y"。
     * <p>
     * 元音字母：a,e,i,o,u
     */
    public static void main(String[] args) {
        System.out.println(reverseVowels("hello"));
        System.out.println(reverseVowels("leetcode"));
        System.out.println(reverseVowels("aA"));
    }

    //自己的解法：头尾指针交换
    public static String reverseVowels(String s) {
        char[] arr = s.toCharArray();
        int front = 0;
        int back = s.length() - 1;

        char tmp;
        while (front < back) {
            if (!isVowel(arr[front])) {
                front++;
                continue;
            }

            if (!isVowel(arr[back])) {
                back--;
                continue;
            }


            tmp = arr[front];
            arr[front] = arr[back];
            arr[back] = tmp;
            front++;
            back--;
        }
        return new String(arr);
    }

    public static boolean isVowel(char c) {
        if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ||
                c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U') {
            return true;
        }
        return false;
    }
}
